Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Задача пошуку нулів функції на відрізку.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2007
Тип роботи:
Лабораторна робота
Предмет:
Дослідження комп'ютерних систем штучного інтелекту
Група:
КСМм-1

Частина тексту файла

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи з курсу „ Дослідження комп'ютерних систем штучного інтелекту ” Тема: Задача пошуку нулів функції на відрізку Виконав: ст. гр. КСМм-1 Львів – 2007 Мета: Ознайомитись із алгоритмами розв’язання задачі пошуку нулів функції на заданому відрізку та написати програму, яка б реалізовувала один з цих алгоритмів. Завдання Написати програму, яка шукає нулі функції cos(1/X) - X*sin(5/X) на заданому інтервалі із заданою точністю. Лістинг програми // max_AI_lab1.cpp #include "stdafx.h" #include "stdio.h" #include "math.h" // діапазон пошуку нулів #define LEFT -0.01 #define RIGHT 0.01 double step = 0.0001; // крок основного проходу double stepE = 0.000000001; // крок додаткового (уточнюючого) проходу double Result; // сюди зберігається результат double func (double X) // власне формула обчислення функції { return ( cos(1/X) - X*sin(5/X) ); } int isZero (double); // пошук нулів функції - загальний "грубий" прохід double extra (double, double); // знаходження точної позиції даного // конкретного нуля // ‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ MAIN ‡‡‡ int main(int argc, char* argv[]) { double i; long znum=1,totalops=0; for ( i = LEFT ; i < RIGHT ; i += step) if ( isZero(i) == 1 ) { printf("got a zero #%04d @ %16.9f\n",znum,Result); znum++; } return 0; } // ‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ isZero ‡‡‡ "грубий прохід" int isZero (double var) { double y, yPrev; double varPrev = var - step; y = func (var); // знач. ф-ції в даній точці yPrev = func (varPrev); // знач. ф-ції в попередній точці if ( ( (y > 0) && (yPrev < 0) ) || // перетин нуля з "+" в "-" ( (y < 0) && (yPrev > 0) ) ) // перетин нуля з "-" в "+" { // більш точне визначення нуля в заданому діапазоні Result = extra (varPrev,var); return 1; } else if (y==0) // bull's eye! { Result = var; return 1; } return 0; } // ‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ extra ‡‡‡ уточнення нуля double extra (double varStart, double varStop) // пошук з підвищеною точністю { double i; for ( i=varStart ; i<=varStop ; i+=stepE) { // printf("."); double y = func(i); double yPrev = func(i-stepE); if ( ( (y > 0) && (yPrev < 0) ) || ( (y < 0) && (yPrev > 0) ) ) return ( i - stepE/2 ); else if ( y==0 ) return ( i ); else if ( yPrev==0 ) return ( i-stepE ); } return 0; } Графічне подання функції на досліджуваному відрізку  Результати виконання роботи Знайдені програмою нулі функції cos(1/X) - X*sin(5/X) на відрізку [-0.01; 0.01]:
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини